﻿using System;
using NUnit.Framework;

namespace Eswat.Services.NUnit
{
#pragma warning disable 1591
	public interface INUnitTestService : ITestService
	{
		TestResult IsTrue(bool condition);
		TestResult IsTrue(bool condition, string message);
		TestResult IsTrue(bool condition, string message, params object[] args);
		TestResult True(bool condition);
		TestResult True(bool condition, string message);
		TestResult True(bool condition, string message, params object[] args);

		TestResult IsFalse(bool condition);
		TestResult IsFalse(bool condition, string message);
		TestResult IsFalse(bool condition, string message, params object[] args);
		TestResult False(bool condition);
		TestResult False(bool condition, string message);
		TestResult False(bool condition, string message, params object[] args);

		TestResult AreEqual(decimal expected, decimal actual);
		TestResult AreEqual(float expected, float actual);
		TestResult AreEqual(double expected, double actual);
		TestResult AreEqual(int expected, int actual);
		TestResult AreEqual(long expected, long actual);
		TestResult AreEqual(object expected, object actual);
		TestResult AreEqual(uint expected, uint actual);
		TestResult AreEqual(ulong expected, ulong actual);

		TestResult AreEqual(decimal expected, decimal actual, string message);
		TestResult AreEqual(float expected, float actual, string message);
		TestResult AreEqual(double expected, double actual, string message);
		TestResult AreEqual(int expected, int actual, string message);
		TestResult AreEqual(long expected, long actual, string message);
		TestResult AreEqual(object expected, object actual, string message);
		TestResult AreEqual(uint expected, uint actual, string message);
		TestResult AreEqual(ulong expected, ulong actual, string message);

		TestResult AreEqual(decimal expected, decimal actual, string message, params object[] args);
		TestResult AreEqual(float expected, float actual, string message, params object[] args);
		TestResult AreEqual(double expected, double actual, string message, params object[] args);
		TestResult AreEqual(int expected, int actual, string message, params object[] args);
		TestResult AreEqual(long expected, long actual, string message, params object[] args);
		TestResult AreEqual(object expected, object actual, string message, params object[] args);
		TestResult AreEqual(uint expected, uint actual, string message, params object[] args);
		TestResult AreEqual(ulong expected, ulong actual, string message, params object[] args);

		TestResult AreEqual(double expected, double actual, double delta);
		TestResult AreEqual(double expected, double? actual, double delta);
		TestResult AreEqual(double expected, double actual, double delta, string message);
		TestResult AreEqual(double expected, double? actual, double delta, string message);
		TestResult AreEqual(double expected, double actual, double delta, string message, params object[] args);
		TestResult AreEqual(double expected, double? actual, double delta, string message, params object[] args);

		TestResult AreNotEqual(decimal expected, decimal actual);
		TestResult AreNotEqual(float expected, float actual);
		TestResult AreNotEqual(double expected, double actual);
		TestResult AreNotEqual(int expected, int actual);
		TestResult AreNotEqual(long expected, long actual);
		TestResult AreNotEqual(object expected, object actual);
		TestResult AreNotEqual(uint expected, uint actual);
		TestResult AreNotEqual(ulong expected, ulong actual);

		TestResult AreNotEqual(decimal expected, decimal actual, string message);
		TestResult AreNotEqual(float expected, float actual, string message);
		TestResult AreNotEqual(double expected, double actual, string message);
		TestResult AreNotEqual(int expected, int actual, string message);
		TestResult AreNotEqual(long expected, long actual, string message);
		TestResult AreNotEqual(object expected, object actual, string message);
		TestResult AreNotEqual(uint expected, uint actual, string message);
		TestResult AreNotEqual(ulong expected, ulong actual, string message);

		TestResult AreNotEqual(decimal expected, decimal actual, string message, params object[] args);
		TestResult AreNotEqual(float expected, float actual, string message, params object[] args);
		TestResult AreNotEqual(double expected, double actual, string message, params object[] args);
		TestResult AreNotEqual(int expected, int actual, string message, params object[] args);
		TestResult AreNotEqual(long expected, long actual, string message, params object[] args);
		TestResult AreNotEqual(object expected, object actual, string message, params object[] args);
		TestResult AreNotEqual(uint expected, uint actual, string message, params object[] args);
		TestResult AreNotEqual(ulong expected, ulong actual, string message, params object[] args);

		TestResult AreNotSame(object expected, object actual);
		TestResult AreNotSame(object expected, object actual, string message);
		TestResult AreNotSame(object expected, object actual, string message, params object[] args);
		TestResult AreSame(object expected, object actual);
		TestResult AreSame(object expected, object actual, string message);
		TestResult AreSame(object expected, object actual, string message, params object[] args);

		TestResult IsNotNull(object anObject);
		TestResult IsNotNull(object anObject, string message);
		TestResult IsNotNull(object anObject, string message, params object[] args);
		TestResult IsNull(object anObject);
		TestResult IsNull(object anObject, string message);
		TestResult IsNull(object anObject, string message, params object[] args);

		TestResult IsNotNull(string aString);
		TestResult IsNotNull(string aString, string message);
		TestResult IsNotNull(string aString, string message, params object[] args);
		TestResult IsNullOrEmpty(string aString);
		TestResult IsNullOrEmpty(string aString, string message);
		TestResult IsNullOrEmpty(string aString, string message, params object[] args);

		void Contains(object expected, System.Collections.ICollection actual);
		void Contains(object expected, System.Collections.ICollection actual, string message);
		void Contains(object expected, System.Collections.ICollection actual, string message, params object[] args);
		void DoesNotThrow(TestDelegate code);
		void DoesNotThrow(TestDelegate code, string message);
		void DoesNotThrow(TestDelegate code, string message, params object[] args);
		void Fail();
		void Fail(string message);
		void Fail(string message, params object[] args);
		void Greater(decimal arg1, decimal arg2);
		void Greater(decimal arg1, decimal arg2, string message);
		void Greater(decimal arg1, decimal arg2, string message, params object[] args);
		void Greater(double arg1, double arg2);
		void Greater(double arg1, double arg2, string message);
		void Greater(double arg1, double arg2, string message, params object[] args);
		void Greater(IComparable arg1, IComparable arg2);
		void Greater(IComparable arg1, IComparable arg2, string message);
		void Greater(IComparable arg1, IComparable arg2, string message, params object[] args);
		void Greater(int arg1, int arg2);
		void Greater(int arg1, int arg2, string message);
		void Greater(int arg1, int arg2, string message, params object[] args);
		void Greater(long arg1, long arg2);
		void Greater(long arg1, long arg2, string message);
		void Greater(long arg1, long arg2, string message, params object[] args);
		void Greater(float arg1, float arg2);
		void Greater(float arg1, float arg2, string message);
		void Greater(float arg1, float arg2, string message, params object[] args);
		void Greater(uint arg1, uint arg2);
		void Greater(uint arg1, uint arg2, string message);
		void Greater(uint arg1, uint arg2, string message, params object[] args);
		void Greater(ulong arg1, ulong arg2);
		void Greater(ulong arg1, ulong arg2, string message);
		void Greater(ulong arg1, ulong arg2, string message, params object[] args);
		void GreaterOrEqual(decimal arg1, decimal arg2);
		void GreaterOrEqual(decimal arg1, decimal arg2, string message);
		void GreaterOrEqual(decimal arg1, decimal arg2, string message, params object[] args);
		void GreaterOrEqual(double arg1, double arg2);
		void GreaterOrEqual(double arg1, double arg2, string message);
		void GreaterOrEqual(double arg1, double arg2, string message, params object[] args);
		void GreaterOrEqual(IComparable arg1, IComparable arg2);
		void GreaterOrEqual(IComparable arg1, IComparable arg2, string message);
		void GreaterOrEqual(IComparable arg1, IComparable arg2, string message, params object[] args);
		void GreaterOrEqual(int arg1, int arg2);
		void GreaterOrEqual(int arg1, int arg2, string message);
		void GreaterOrEqual(int arg1, int arg2, string message, params object[] args);
		void GreaterOrEqual(long arg1, long arg2);
		void GreaterOrEqual(long arg1, long arg2, string message);
		void GreaterOrEqual(long arg1, long arg2, string message, params object[] args);
		void GreaterOrEqual(float arg1, float arg2);
		void GreaterOrEqual(float arg1, float arg2, string message);
		void GreaterOrEqual(float arg1, float arg2, string message, params object[] args);
		void GreaterOrEqual(uint arg1, uint arg2);
		void GreaterOrEqual(uint arg1, uint arg2, string message);
		void GreaterOrEqual(uint arg1, uint arg2, string message, params object[] args);
		void GreaterOrEqual(ulong arg1, ulong arg2);
		void GreaterOrEqual(ulong arg1, ulong arg2, string message);
		void GreaterOrEqual(ulong arg1, ulong arg2, string message, params object[] args);
		void IsEmpty(System.Collections.ICollection collection);
		void IsEmpty(System.Collections.ICollection collection, string message);
		void IsEmpty(System.Collections.ICollection collection, string message, params object[] args);
		void IsEmpty(string aString);
		void IsEmpty(string aString, string message);
		void IsEmpty(string aString, string message, params object[] args);
		void IsNaN(double aDouble);
		void IsNaN(double aDouble, string message);
		void IsNaN(double aDouble, string message, params object[] args);
		void IsNaN(double? aDouble);
		void IsNaN(double? aDouble, string message);
		void IsNaN(double? aDouble, string message, params object[] args);
		void IsNotEmpty(System.Collections.ICollection collection);
		void IsNotEmpty(System.Collections.ICollection collection, string message);
		void IsNotEmpty(System.Collections.ICollection collection, string message, params object[] args);
		void IsNotEmpty(string aString);
		void IsNotEmpty(string aString, string message);
		void IsNotEmpty(string aString, string message, params object[] args);
		void Less(decimal arg1, decimal arg2);
		void Less(decimal arg1, decimal arg2, string message);
		void Less(decimal arg1, decimal arg2, string message, params object[] args);
		void Less(double arg1, double arg2);
		void Less(double arg1, double arg2, string message);
		void Less(double arg1, double arg2, string message, params object[] args);
		void Less(IComparable arg1, IComparable arg2);
		void Less(IComparable arg1, IComparable arg2, string message);
		void Less(IComparable arg1, IComparable arg2, string message, params object[] args);
		void Less(int arg1, int arg2);
		void Less(int arg1, int arg2, string message);
		void Less(int arg1, int arg2, string message, params object[] args);
		void Less(long arg1, long arg2);
		void Less(long arg1, long arg2, string message);
		void Less(long arg1, long arg2, string message, params object[] args);
		void Less(float arg1, float arg2);
		void Less(float arg1, float arg2, string message);
		void Less(float arg1, float arg2, string message, params object[] args);
		void Less(uint arg1, uint arg2);
		void Less(uint arg1, uint arg2, string message);
		void Less(uint arg1, uint arg2, string message, params object[] args);
		void Less(ulong arg1, ulong arg2);
		void Less(ulong arg1, ulong arg2, string message);
		void Less(ulong arg1, ulong arg2, string message, params object[] args);
		void LessOrEqual(decimal arg1, decimal arg2);
		void LessOrEqual(decimal arg1, decimal arg2, string message);
		void LessOrEqual(decimal arg1, decimal arg2, string message, params object[] args);
		void LessOrEqual(double arg1, double arg2);
		void LessOrEqual(double arg1, double arg2, string message);
		void LessOrEqual(double arg1, double arg2, string message, params object[] args);
		void LessOrEqual(IComparable arg1, IComparable arg2);
		void LessOrEqual(IComparable arg1, IComparable arg2, string message);
		void LessOrEqual(IComparable arg1, IComparable arg2, string message, params object[] args);
		void LessOrEqual(int arg1, int arg2);
		void LessOrEqual(int arg1, int arg2, string message);
		void LessOrEqual(int arg1, int arg2, string message, params object[] args);
		void LessOrEqual(long arg1, long arg2);
		void LessOrEqual(long arg1, long arg2, string message);
		void LessOrEqual(long arg1, long arg2, string message, params object[] args);
		void LessOrEqual(float arg1, float arg2);
		void LessOrEqual(float arg1, float arg2, string message);
		void LessOrEqual(float arg1, float arg2, string message, params object[] args);
		void LessOrEqual(uint arg1, uint arg2);
		void LessOrEqual(uint arg1, uint arg2, string message);
		void LessOrEqual(uint arg1, uint arg2, string message, params object[] args);
		void LessOrEqual(ulong arg1, ulong arg2);
		void LessOrEqual(ulong arg1, ulong arg2, string message);
		void LessOrEqual(ulong arg1, ulong arg2, string message, params object[] args);
	}
#pragma warning restore 1591
}
